var express = require("express");
var app = express();
var bodyParser = require("body-parser");
var morgan = require("morgan");
var mongoose = require("mongoose");

var jwt = require("jsonwebtoken"); //用来创建和确认用户信息摘要
var config = require("./libs/config"); //读取配置文件config.js信息

//一些配置
var port = config.port || process.env.PORT || 8080; // 设置启动端口
mongoose.connect(config.mongoose); // 连接数据库
app.set("superSecret", config.secret); // 设置app 的超级密码--用来生成摘要的密码

// 解决跨域的库
const cors = require("cors");
app.use(cors());

//用body parser 来解析post和url信息中的参数
// body-parser中间件写法（已弃用）
// app.use(bodyParser.urlencoded({extended: false}));
// app.use(bodyParser.json());
// express最新版版内置了post参数解析,可以直接调用express
// json解析
app.use(express.urlencoded({ extended: false }));
app.use(express.json());
// app.post('/service/update', (req, res) => {
//   console.log("res",req.body)
// })

// 使用 morgan 将请求日志打印到控制台
app.use(morgan("dev"));

//路由
//基础路由
app.get("/", function (req, res) {
  res.send("这里是nodejs+mongodb+mysql编写restfulAPI的笔记！");
});

var setupRoute = require("./routes/setup"); // 导入路由文件
app.use("/setup", setupRoute); //设置访问路径

var userRoute = require("./routes/user"); // 导入路由文
app.use("/user", userRoute); //设置访问路径

var categoryRoute = require("./routes/category"); // 导入路由文件
app.use("/category", categoryRoute); //设置访问路径

const db = require("./libs/index");  // mysql  sequelize
db.sequelize.sync();
var mqttRoute = require("./routes/mqtt"); // 导入路由文件
app.use("/mqtt", mqttRoute); //设置访问路径

// let payload =
//   '{"device_id":"esp_device001_370098",\n' +
//   '"type":"温湿度传感器",\n' +
//   '"sun":1,\n' +
//   '"temp":2,\n' +
//   '"humi":3,\n' +
//   '"relay":0\n' +
//   "}";
// console.log(JSON.parse(payload).type);
// 启动服务
app.listen(port);
console.log("Magic happens at http://localhost:" + port);
